package leetcode; /**
 * description:
 * author:zt
 * date:2021-08-29
 */

/**
 * 给你一个正整数数组arr，请你计算所有可能的奇数长度子数组的和。
 *
 * 子数组 定义为原数组中的一个连续子序列。
 *
 * 请你返回 arr中 所有奇数长度子数组的和
 */
public class leetcode1588 {
    //出现奇数长度，
    // 即表示一个数字左边长度是奇数右边也是奇数，或者左边是偶数右边也是偶数
    public int sumOddLengthSubarrays(int[] arr) {
        int res = 0;
        for(int i = 0; i < arr.length; i ++){
            int left = i + 1, right = arr.length - i,
                    left_even = (left + 1) / 2, right_even = (right + 1) / 2,
                    left_odd = left / 2, right_odd = right / 2;
            res += (left_even * right_even + left_odd * right_odd) * arr[i];
        }
        return res;
    }
}
